Day 0:系列簡介篇 — 為什麼要挑戰 MACI?
在區塊鏈世界,我們談透明、談公開、談信任。
但當我們進入治理與投票的場景時,過度透明反而成了風險。
誰投給誰、誰支持哪個提案,如果全部攤在鏈上,
社群投票將不再是自由的,而會被人際或資金壓力左右。
這正是 MACI(Minimal Anti-Collusion Infrastructure) 的初衷。
它讓人們可以在隱私與可驗證之間取得平衡,
實現「誠實最便宜」的投票制度。
MACI 是以零知識證明為基礎的投票基礎設施,
它是 Gitcoin Grants、clr.fund、ZK-DAO 等平台的核心理念。
理論上只要幾個步驟就能部署;
但實際上,從 MACI 從 1.0 後,部署難度堪稱 Web3 惡名昭彰。
雖然 MACI 的設計極其優雅,但現實是:
結果是——即使是有經驗的 Web3 開發者,也常常:
照官方文件走不到十步,幾乎必踩坑。
這個 14 天系列不是學術探討,也不是理論講解,
而是一場「從坑裡走出來」的部署實錄。
我們會:
重點放在部署,後半段簡化整合。
| Day | 主題 | 摘要 |
|---|---|---|
| 1 | 建立乾淨環境 | Node、pnpm、Hardhat、circom、zkey 工具鏈準備 |
| 2 | Clone 與 monorepo 結構導覽 | packages 與 apps 架構解說 |
| 3 | circuits:Poseidon 與 MerkleTree | 電路建構與常見錯誤排除 |
| 4 | 生成 zKey 與 Verifier | build 電路、產出 zkey、生成 Solidity verifier |
| 5 | contracts:Coordinator 與 Poll | 主要合約部署與調試 |
| 6 | 部署 VerifierAdapter | 連接 zk-proof 與主系統 |
| 7 | Relayer 與 Message Flow | 交易中繼與訊息加密流程 |
| 8 | CLI 投票流程 | 註冊、投票、開票完整測試 |
| 9 | Hardhat + Base Sepolia 部署 | 測試網實際部署與驗證 |
| 10 | 部署自動化腳本 | 寫出可重現的 deploy script |
| 11 | QF 模擬流程簡介 | 投票結果計算與配捐概念 |
| 12 | 基礎前端整合(選填) | 以最小 UI 示範互動 |
| 13 | 常見錯誤與排坑指南 | 彙整錯誤訊息與修復方法 |
| 14 | 總結與可重現教學 | 打包專案、一鍵重現流程 |
因為這已不是新手挑戰,而是經驗者的生死局。
部署 MACI 的過程比一般鐵人賽更長、更曲折,
你會在這裡遇見 Hardhat、circom、pnpm、zkey、verifier、typescript 的全部坑。
這是一場「理解」與「重現」的比賽。
不求炫技,只求真正讓 MACI 起得來。
MACI 是一座由零知識搭起的信任橋樑。
它的價值不在於理論,而在於被成功重現的那一刻。
接下來,讓我們從 Day 1:建立乾淨環境與基礎工具鏈 開始,
一起踏上這條部署之路。
“In theory, there is no difference between theory and practice.
But in practice, there is.”
— Yogi Berra